//T10003. N 皇后问题
#include <iostream>
#include <iomanip>

using namespace std;
const int MAXN=10;
int n;
int col[MAXN+1];
bool colflag[MAXN+1],diag0flag[2*MAXN+1],diag1flag[2*MAXN+1];//列标记，左对角线标记（行与列的差固定），右对角线标记（行与列的和固定)
bool can;
void print(){
    for(int i=1;i<=n;i++) cout<<setw(5)<<col[i];
    cout<<endl;
}
void search(int i){
    for(int j=1;j<=n;j++){
        if ((!colflag[j])&&(!diag0flag[i-j+n])&&(!diag1flag[i+j])){
            col[i]=j;
            colflag[j]=true;
            diag0flag[i-j+n]=true;
            diag1flag[i+j]=true;
            if (i==n){
                can=true;
                print();
            }else search(i+1);
            colflag[j]=false;
            diag0flag[i-j+n]=false;
            diag1flag[i+j]=false;
        }
    }
}
int main(){
    cin>>n;
    search(1);
    if (!can){
        cout<<"no solute!";
    }
}